$(function () {

    layui.use('layer', function(){
        var layer = layui.layer;
    });

    //获取全部权限，并填充数据
    findRoots($("#root"));
    //给权限复选框填充数据，并默认选中
    findRoots($("#rootUpdate"));
})

$(function () {
    findAll(1);
})

/**
 * 查询全部角色数据
 */
function findAll(pageNo) {
    $.post("/role/findPage","pageNO="+pageNo,function (pageInfo) {
        var str ="";
        for(var i=0;i<pageInfo.list.length;i++){
            var obj = pageInfo.list[i];
            str+=`<tr><td>${obj.name}</td>
         <td><a class="layui-btn layui-btn-danger" href="javascript:delRole(${obj.id})">删除</a>
        <a class="layui-btn layui-btn-warm" href="javascript:update(${obj.id})">修改</a>
        <a class="layui-btn layui-btn-normal" href="javascript:checkRole(${obj.id})">查看</a></td></tr>`;
        }
        $("#roleTableBody").html(str);

        if(pageNo == 1){
            layui.use('laypage', function(){
                var laypage = layui.laypage;

                //执行一个laypage实例
                laypage.render({
                    elem: 'cutPageDiv' //注意，这里的 test1 是 ID，不用加 # 号
                    ,count: pageInfo.total, //数据总数，从服务端得到
                    limit:3,
                    jump:function (obj,first) {
                        if(!first){
                            findAll(obj.curr);
                        }
                    }
                });
            });
        }
    });
}

/**
 * 添加角色弹出
 */
function add() {
    layer.open({
        title:"添加角色", // 标题
        type:1,//弹出层类别，1表示页面层
        shadeClose:true,//点击遮罩，关闭对话框
        skin: 'layui-layer-rim', //加上边框
        area: ['720px', '540px'], //宽高
        anim:4,
        content: $("#addDiv")
    });


}

/**
 * 验证用户添加填写数据是否正确
 */
function checkName() {
    $("#roleName").html("");
    var pattern = /[\u4E00-\u9FA5]{1,9}$/;

    if(pattern.test($("#roleName").val()) == false ){
        $("#nameSpan").html("请输入1到9位的汉字")
        return false;
    }

}
function checkRoots() {
    var intArray = [];

    $("input[type=checkbox]:checked").each(function () {
        intArray.push($(this).val());
    })
    if(intArray.length == 0){
        return false;
    }
}

/**
 * 添加角色数据
 */
function addRole() {
    if(checkName() == false){
        alert("请填写正确的数据")
        return;
    }
    if(checkRoots() == false){
        alert("请勾选权限");
        return;
    }
    $.post("/role/addRole",$("#addForm").serialize(),function (info) {
        if(info == "no"){
            alert("该用户名已存在");
        }else{
            alert("添加成功");
        }
    });
    //关闭之前将添加界面的权限数据设置成空，这样和修改界面就永远不会冲突
    $("#root").html("");
    location.reload();
}


/**
 * 删除角色
 * @param id
 */
function delRole(id) {
    $.post("/role/delRole","id="+id,function () {

    });
    location.reload();
}

/**
 * 查看角色信息
 * @param id 角色id
 */
function checkRole(id) {
    layer.open({
        title:"查看角色", // 标题
        type:1,//弹出层类别，1表示页面层
        shadeClose:true,//点击遮罩，关闭对话框
        skin: 'layui-layer-rim', //加上边框
        area: ['720px', '540px'], //宽高
        anim:4,
        content: $("#checkDiv")
    });
    $.post("/role/findById","id="+id,function (role) {
        $("#roleSpan").html(role.name);
        var str2 = "";
        for(var i=0;i<role.roleRoot.length;i++){
            var rootObj = role.roleRoot[i];
            str2 += rootObj.name;
            if(i<role.roleRoot.length -1){
                str2+=","
            }
        }
        $("#rootSpan").html(str2);
    });
}

/**
 * 修改弹出
 */
function update(id) {
    //给隐藏表单赋值
    $("#id").val(id);


    // getUpdateInfo(id);
    // $.ajaxSetup({
    //     async:false
    // });
    layui.use('form', function(){
        var form = layui.form;

        form.render();
    });

    $("#rootUpdate :checkbox").attr("checked",false);
    $.post("/role/findById","id="+id,function (role) {
        $("#updateNameSpan").html(role.name);
        for(var i=0;i<role.roleRoot.length;i++){
            var rootObj = role.roleRoot[i];
            // var obj = document.getElementById(rootObj.id);
            // $(obj).prop('checked',true);
            $("#rootUpdate :checkbox[value="+rootObj.id+"]").attr("checked",true);
        }
    });


    layer.open({
        title:"修改角色", // 标题
        type:1,//弹出层类别，1表示页面层
        shadeClose:true,//点击遮罩，关闭对话框
        skin: 'layui-layer-rim', //加上边框
        area: ['720px', '540px'], //宽高
        anim:4,
        content: $("#updateDiv")
    });

    // $.ajaxSetup({
    //     async:true
    // });

}

/**
 * 点击取消关闭弹出层
 */
function closeLayer() {
    layer.closeAll();
    location.reload();
}


/**
 *修改角色权限数据
 */
function updateRole() {
    if(checkRoots() == false){
        alert("请勾选权限");
        return;
    }
    $.post("/role/update",$("#updateForm").serialize(),function () {

    });
    location.reload();
}


/**
 * 查询所有权限，并填充元素
 */
function findRoots(root) {
    var str ="拥有权限："
    $.post("/root/findAll",function (rootList) {

        for(var i=0;i<rootList.length;i++){
            var rootObj=rootList[i];
            str+=`<input type="checkbox" name="rootIDArray" value="${rootObj.id}">${rootObj.name}`;
        }
        root.html(str);
    });
}
